---
title: Populate an imaging-import descriptor for distribution
summary: Lazily constructs and caches a clsImageImport descriptor on clsPrint, applying construction-time defaults for downstream imaging distribution.
status: draft
owner: SAIF Documentation
last_reviewed: 2026-09-01
library: SAIF.Services.Imaging.Import
reference_type: embedded
operation_id: op-img-002-populate-import-descriptor
trigger: Print/distribution caller accesses clsPrint.ImportInfo
---

# Populate an imaging-import descriptor for distribution

Populates an imaging-import descriptor on demand: the caller-side `clsPrint.ImportInfo` property lazily constructs a `clsImageImport` instance, delegating construction into this library so that [BR-IMG-008](../business-rules.md#br-img-008-construction-time-defaults) construction-time defaults are applied before the descriptor is returned.

This is a cross-library operation. The trigger and caching originate in `SAIF.Services.Printing` (`clsPrint.vb`), while the descriptor's default-value initialization is owned by this library (`clsImageImport.vb`).

| Field | Value |
| --- | --- |
| **Operation ID** | op-img-002-populate-import-descriptor |
| **Trigger** | Caller (print/distribution flow) accesses the `clsPrint.ImportInfo` property getter |
| **Inputs** | None (lazy instance creation) |
| **Outputs** | Initialized `clsImageImport` instance held on `clsPrint.m_ImportInfo`, with [BR-IMG-008](../business-rules.md#br-img-008-construction-time-defaults) defaults applied |
| **Primary components** | `clsPrint.ImportInfo` getter (`SAIF.Services.Printing`) → `clsImageImport` constructor/property initializers (`SAIF.Services.Imaging.Import`) |
| **Entry point** | `SAIF.Services.Printing/clsPrint.vb` (`ImportInfo` property, lines ~76–85) |

## Steps

1. **[SAIF.Services.Printing — caller]** Caller reads the `ImportInfo` property on a `clsPrint` instance.
2. **[SAIF.Services.Printing — caller]** The getter checks `If m_ImportInfo Is Nothing Then` as a lazy-init guard; this check is plumbing local to `clsPrint.vb` and is not governed by an imaging business rule.
3. **[SAIF.Services.Printing — caller] → [SAIF.Services.Imaging.Import — descriptor, delegated]** On first access, the getter executes `m_ImportInfo = New clsImageImport`, delegating construction into this library.
4. **[SAIF.Services.Imaging.Import — descriptor]** `clsImageImport` property initializers apply construction-time defaults: `ImageIndexFlag="Y"`, `ImageFileCode="CLAIM"`, `NPages=1`, `DocumentDateDays=7`, `TaskPriority="MED"`, `SystemGeneratedFlag="Y"`, `PolicySecuredFlag="N"` — [BR-IMG-008](../business-rules.md#br-img-008-construction-time-defaults).
5. **[SAIF.Services.Printing — caller]** The getter returns `m_ImportInfo` (newly constructed or cached) to the caller.
6. **[SAIF.Services.Printing — caller]** Subsequent accesses on the same `clsPrint` instance return the cached descriptor directly — no re-construction and no re-application of the [BR-IMG-008](../business-rules.md#br-img-008-construction-time-defaults) defaults occurs.

## Process flow

The following diagram visualizes this operation's control flow, with the two owning libraries separated into subgraphs to make the cross-library boundary explicit.

```mermaid
flowchart TD
	subgraph Caller["SAIF.Services.Printing"]
		Start(["Caller accesses<br>clsPrint.ImportInfo"]) --> A{"m_ImportInfo<br>Is Nothing?"}
		A -->|Yes| B["clsPrint: New<br>clsImageImport()"]
		D["clsPrint: cache result<br>in m_ImportInfo"] --> End(["Return clsImageImport<br>instance to caller"])
		A -->|No| End
	end
	subgraph Descriptor["SAIF.Services.Imaging.Import"]
		C["clsImageImport: apply<br>construction-time defaults<br>(BR-IMG-008)"]
	end
	B --> C
	C --> D
```

## Failure and edge-case behavior
- No exception handling exists in the `ImportInfo` getter; the lazy-construction path always succeeds.
- The [BR-IMG-008](../business-rules.md#br-img-008-construction-time-defaults) defaults are applied exactly once per `clsPrint` instance lifetime; a reused instance that needs fresh defaults must have `ImportInfo` explicitly reset via the setter, since no built-in reset mechanism exists.*
- The `ImportInfo` setter allows a caller to bypass [BR-IMG-008](../business-rules.md#br-img-008-construction-time-defaults) defaults entirely by assigning a pre-built or externally sourced `clsImageImport` instance — the rule is therefore not universally guaranteed for every value later read from `ImportInfo`.*

## Related documentation
- [Index](../index.md)
- [Overview](../overview.md)
- [Architecture](../architecture.md)
- [Dependencies](../dependencies.md)
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [API reference](../api/index.md)
- [Serialize imaging-import metadata into wire format](op-img-001-serialize-wire-format.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Services.Printing/clsPrint.vb`
- `SAIF.Services.Imaging.Import/clsImageImport.vb`
